WOLF core
WOLF: A Modular Estimation Framework for Robotics
XXXXXXXXXXXXXXXXXXXXXXXXvoid(0)" frameborder="0" name="MSearchResults" id="MSearchResults">
wolf::LocalParametrizationQuaternion< DeltaReference > Class Template Reference

Local parametrization for quaternions. More...

#include <core/state_block/local_parametrization_quaternion.h>

Inheritance diagram for wolf::LocalParametrizationQuaternion< DeltaReference >:
[legend]

Public Member Functions

 LocalParametrizationQuaternion ()
 
 ~LocalParametrizationQuaternion () override
 
bool plus (Eigen::Map< const Eigen::VectorXd > &_q, Eigen::Map< const Eigen::VectorXd > &_delta_theta, Eigen::Map< Eigen::VectorXd > &_q_plus_delta_theta) const override
 
bool computePlusJacobian (Eigen::Map< const Eigen::VectorXd > &_q, Eigen::Map< Eigen::MatrixRowXd > &_jacobian) const override
 Compute the Jacobian of the plus operation wrt the local increment. More...
 
bool minus (Eigen::Map< const Eigen::VectorXd > &_q1, Eigen::Map< const Eigen::VectorXd > &_q2, Eigen::Map< Eigen::VectorXd > &_q2_minus_q1) const override
 Minus operation: compute the local increment between two states: NOTE: This function computes x2 (minus) x1 ! More...
 
bool computeMinusJacobian (Eigen::Map< const Eigen::VectorXd > &_q, Eigen::Map< Eigen::MatrixRowXd > &_jacobian) const override
 
bool isValid (const Eigen::VectorXd &_state, double tolerance) const override
 
bool plus (Eigen::Map< const Eigen::VectorXd > &_q, Eigen::Map< const Eigen::VectorXd > &_delta_theta, Eigen::Map< Eigen::VectorXd > &_q_plus_delta_theta) const
 
bool computePlusJacobian (Eigen::Map< const Eigen::VectorXd > &_q, Eigen::Map< Eigen::MatrixRowXd > &_jacobian) const
 Compute the Jacobian of the plus operation wrt the local increment. More...
 
bool minus (Eigen::Map< const Eigen::VectorXd > &_q1, Eigen::Map< const Eigen::VectorXd > &_q2, Eigen::Map< Eigen::VectorXd > &_q2_minus_q1) const
 Minus operation: compute the local increment between two states: NOTE: This function computes x2 (minus) x1 ! More...
 
bool computeMinusJacobian (Eigen::Map< const Eigen::VectorXd > &_q, Eigen::Map< Eigen::MatrixRowXd > &_jacobian) const
 
bool plus (Eigen::Map< const Eigen::VectorXd > &_q, Eigen::Map< const Eigen::VectorXd > &_delta_theta, Eigen::Map< Eigen::VectorXd > &_q_plus_delta_theta) const
 
bool computePlusJacobian (Eigen::Map< const Eigen::VectorXd > &_q, Eigen::Map< Eigen::MatrixRowXd > &_jacobian) const
 Compute the Jacobian of the plus operation wrt the local increment. More...
 
bool minus (Eigen::Map< const Eigen::VectorXd > &_q1, Eigen::Map< const Eigen::VectorXd > &_q2, Eigen::Map< Eigen::VectorXd > &_q2_minus_q1) const
 Minus operation: compute the local increment between two states: NOTE: This function computes x2 (minus) x1 ! More...
 
bool computeMinusJacobian (Eigen::Map< const Eigen::VectorXd > &_q, Eigen::Map< Eigen::MatrixRowXd > &_jacobian) const
 
- Public Member Functions inherited from wolf::LocalParametrizationBase
 LocalParametrizationBase (unsigned int _global_size, unsigned int _local_size)
 
virtual ~LocalParametrizationBase ()
 
bool plus (const Eigen::VectorXd &_x, const Eigen::VectorXd &_delta, Eigen::VectorXd &_x_plus_delta) const
 Plus operation: apply a local increment to a state. More...
 
virtual bool plus (Eigen::Map< const Eigen::VectorXd > &_x, Eigen::Map< const Eigen::VectorXd > &_delta, Eigen::Map< Eigen::VectorXd > &_x_plus_delta) const =0
 
virtual bool computePlusJacobian (Eigen::Map< const Eigen::VectorXd > &_x, Eigen::Map< Eigen::MatrixRowXd > &_jacobian) const =0
 Compute the Jacobian of the plus operation wrt the local increment. More...
 
virtual bool minus (Eigen::Map< const Eigen::VectorXd > &_x1, Eigen::Map< const Eigen::VectorXd > &_x2, Eigen::Map< Eigen::VectorXd > &_x2_minus_x1) const =0
 Minus operation: compute the local increment between two states: NOTE: This function computes x2 (minus) x1 ! More...
 
virtual bool computeMinusJacobian (Eigen::Map< const Eigen::VectorXd > &_x, Eigen::Map< Eigen::MatrixRowXd > &_jacobian) const =0
 
virtual bool isValid (const Eigen::VectorXd &state, double tolerance) const =0
 
unsigned int getLocalSize () const
 
unsigned int getGlobalSize () const
 

Additional Inherited Members

- Protected Attributes inherited from wolf::LocalParametrizationBase
unsigned int global_size_
 
unsigned int local_size_
 

Detailed Description

template<QuaternionDeltaReference DeltaReference = DQ_LOCAL>
class wolf::LocalParametrizationQuaternion< DeltaReference >

Local parametrization for quaternions.

This class implements two possible local parametrizations for quaternions:

  • With a local delta, so that \({\bf q}^+ = {\bf q} \otimes {\bf q}(d\theta)\).
  • With a global delta, so that \({\bf q}^+ = {\bf q}(d\theta) \otimes {\bf q}\).

More information on the formulation in the document: http://mobile_robotics.pages.iri.upc-csic.es/wolf_projects/wolf_lib/wolf-doc-sphinx/_static/WOLF_Jacobians_for_ceres_Manifolds.pdf

Constructor & Destructor Documentation

◆ LocalParametrizationQuaternion()

template<QuaternionDeltaReference DeltaReference = DQ_LOCAL>
wolf::LocalParametrizationQuaternion< DeltaReference >::LocalParametrizationQuaternion ( )
inline

◆ ~LocalParametrizationQuaternion()

template<QuaternionDeltaReference DeltaReference = DQ_LOCAL>
wolf::LocalParametrizationQuaternion< DeltaReference >::~LocalParametrizationQuaternion ( )
inlineoverride

Member Function Documentation

◆ computeMinusJacobian() [1/3]

bool wolf::LocalParametrizationQuaternion< DQ_LOCAL >::computeMinusJacobian ( Eigen::Map< const Eigen::VectorXd > &  _q,
Eigen::Map< Eigen::MatrixRowXd > &  _jacobian 
) const
virtual

◆ computeMinusJacobian() [2/3]

bool wolf::LocalParametrizationQuaternion< DQ_GLOBAL >::computeMinusJacobian ( Eigen::Map< const Eigen::VectorXd > &  _q,
Eigen::Map< Eigen::MatrixRowXd > &  _jacobian 
) const
virtual

◆ computeMinusJacobian() [3/3]

template<QuaternionDeltaReference DeltaReference = DQ_LOCAL>
bool wolf::LocalParametrizationQuaternion< DeltaReference >::computeMinusJacobian ( Eigen::Map< const Eigen::VectorXd > &  _q,
Eigen::Map< Eigen::MatrixRowXd > &  _jacobian 
) const
overridevirtual

◆ computePlusJacobian() [1/3]

bool wolf::LocalParametrizationQuaternion< DQ_LOCAL >::computePlusJacobian ( Eigen::Map< const Eigen::VectorXd > &  _x,
Eigen::Map< Eigen::MatrixRowXd > &  _jacobian 
) const
virtual

Compute the Jacobian of the plus operation wrt the local increment.

Parameters
_xthe state
_jacobianthe Jacobian matrix
Returns
true if successful

Implements wolf::LocalParametrizationBase.

◆ computePlusJacobian() [2/3]

bool wolf::LocalParametrizationQuaternion< DQ_GLOBAL >::computePlusJacobian ( Eigen::Map< const Eigen::VectorXd > &  _x,
Eigen::Map< Eigen::MatrixRowXd > &  _jacobian 
) const
virtual

Compute the Jacobian of the plus operation wrt the local increment.

Parameters
_xthe state
_jacobianthe Jacobian matrix
Returns
true if successful

Implements wolf::LocalParametrizationBase.

◆ computePlusJacobian() [3/3]

template<QuaternionDeltaReference DeltaReference = DQ_LOCAL>
bool wolf::LocalParametrizationQuaternion< DeltaReference >::computePlusJacobian ( Eigen::Map< const Eigen::VectorXd > &  _x,
Eigen::Map< Eigen::MatrixRowXd > &  _jacobian 
) const
overridevirtual

Compute the Jacobian of the plus operation wrt the local increment.

Parameters
_xthe state
_jacobianthe Jacobian matrix
Returns
true if successful

Implements wolf::LocalParametrizationBase.

◆ isValid()

template<QuaternionDeltaReference DeltaReference = DQ_LOCAL>
bool wolf::LocalParametrizationQuaternion< DeltaReference >::isValid ( const Eigen::VectorXd &  _state,
double  tolerance 
) const
inlineoverridevirtual

◆ minus() [1/3]

bool wolf::LocalParametrizationQuaternion< DQ_LOCAL >::minus ( Eigen::Map< const Eigen::VectorXd > &  _x1,
Eigen::Map< const Eigen::VectorXd > &  _x2,
Eigen::Map< Eigen::VectorXd > &  _x2_minus_x1 
) const
virtual

Minus operation: compute the local increment between two states: NOTE: This function computes x2 (minus) x1 !

Parameters
_x1the first state
_x2the second state
_x2_minus_x1the resulting local increment
Returns
true if successful

Implements wolf::LocalParametrizationBase.

◆ minus() [2/3]

bool wolf::LocalParametrizationQuaternion< DQ_GLOBAL >::minus ( Eigen::Map< const Eigen::VectorXd > &  _x1,
Eigen::Map< const Eigen::VectorXd > &  _x2,
Eigen::Map< Eigen::VectorXd > &  _x2_minus_x1 
) const
virtual

Minus operation: compute the local increment between two states: NOTE: This function computes x2 (minus) x1 !

Parameters
_x1the first state
_x2the second state
_x2_minus_x1the resulting local increment
Returns
true if successful

Implements wolf::LocalParametrizationBase.

◆ minus() [3/3]

template<QuaternionDeltaReference DeltaReference = DQ_LOCAL>
bool wolf::LocalParametrizationQuaternion< DeltaReference >::minus ( Eigen::Map< const Eigen::VectorXd > &  _x1,
Eigen::Map< const Eigen::VectorXd > &  _x2,
Eigen::Map< Eigen::VectorXd > &  _x2_minus_x1 
) const
overridevirtual

Minus operation: compute the local increment between two states: NOTE: This function computes x2 (minus) x1 !

Parameters
_x1the first state
_x2the second state
_x2_minus_x1the resulting local increment
Returns
true if successful

Implements wolf::LocalParametrizationBase.

◆ plus() [1/3]

bool wolf::LocalParametrizationQuaternion< DQ_LOCAL >::plus ( Eigen::Map< const Eigen::VectorXd > &  _q,
Eigen::Map< const Eigen::VectorXd > &  _delta_theta,
Eigen::Map< Eigen::VectorXd > &  _q_plus_delta_theta 
) const
virtual

◆ plus() [2/3]

bool wolf::LocalParametrizationQuaternion< DQ_GLOBAL >::plus ( Eigen::Map< const Eigen::VectorXd > &  _q,
Eigen::Map< const Eigen::VectorXd > &  _delta_theta,
Eigen::Map< Eigen::VectorXd > &  _q_plus_delta_theta 
) const
virtual

◆ plus() [3/3]

template<QuaternionDeltaReference DeltaReference = DQ_LOCAL>
bool wolf::LocalParametrizationQuaternion< DeltaReference >::plus ( Eigen::Map< const Eigen::VectorXd > &  _q,
Eigen::Map< const Eigen::VectorXd > &  _delta_theta,
Eigen::Map< Eigen::VectorXd > &  _q_plus_delta_theta 
) const
overridevirtual

The documentation for this class was generated from the following file: